Initialize DOUBLE_BUFFERED flag to on.
authorOwen Taylor <otaylor@redhat.com>
Fri, 2 Jun 2000 17:02:16 +0000 (17:02 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Fri, 2 Jun 2000 17:02:16 +0000 (17:02 +0000)
Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>

* gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
flag to on.

* gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event):
Honor DOUBLE_BUFFRED_FLAG

* gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
function to set the DOUBLE_BUFFERED flag.

* gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
or not exposes done on the widget should be double-buffered.

* gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
to be what would be expected. (Fixes problem with a
g_return_if_fail() validating a TextDirection enumeration)

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkenums.h
gtk/gtkmain.c
gtk/gtkwidget.c
gtk/gtkwidget.h

index f5205c77aa84e2344fabdc718c29f8702cced1b1..d33cfd8bca0597ecbf5839e51c62cc6b307ca053 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
+       flag to on.
+
+       * gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event): 
+       Honor DOUBLE_BUFFRED_FLAG
+
+       * gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
+       function to set the DOUBLE_BUFFERED flag.
+
+       * gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
+       or not exposes done on the widget should be double-buffered.
+
+       * gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
+       to be what would be expected. (Fixes problem with a
+       g_return_if_fail() validating a TextDirection enumeration)
+
 Thu Jun  1 23:05:13 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkwidget.c: Remove all references to 
index f5205c77aa84e2344fabdc718c29f8702cced1b1..d33cfd8bca0597ecbf5839e51c62cc6b307ca053 100644 (file)
@@ -1,3 +1,21 @@
+Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
+       flag to on.
+
+       * gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event): 
+       Honor DOUBLE_BUFFRED_FLAG
+
+       * gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
+       function to set the DOUBLE_BUFFERED flag.
+
+       * gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
+       or not exposes done on the widget should be double-buffered.
+
+       * gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
+       to be what would be expected. (Fixes problem with a
+       g_return_if_fail() validating a TextDirection enumeration)
+
 Thu Jun  1 23:05:13 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkwidget.c: Remove all references to 
index f5205c77aa84e2344fabdc718c29f8702cced1b1..d33cfd8bca0597ecbf5839e51c62cc6b307ca053 100644 (file)
@@ -1,3 +1,21 @@
+Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
+       flag to on.
+
+       * gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event): 
+       Honor DOUBLE_BUFFRED_FLAG
+
+       * gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
+       function to set the DOUBLE_BUFFERED flag.
+
+       * gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
+       or not exposes done on the widget should be double-buffered.
+
+       * gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
+       to be what would be expected. (Fixes problem with a
+       g_return_if_fail() validating a TextDirection enumeration)
+
 Thu Jun  1 23:05:13 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkwidget.c: Remove all references to 
index f5205c77aa84e2344fabdc718c29f8702cced1b1..d33cfd8bca0597ecbf5839e51c62cc6b307ca053 100644 (file)
@@ -1,3 +1,21 @@
+Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
+       flag to on.
+
+       * gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event): 
+       Honor DOUBLE_BUFFRED_FLAG
+
+       * gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
+       function to set the DOUBLE_BUFFERED flag.
+
+       * gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
+       or not exposes done on the widget should be double-buffered.
+
+       * gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
+       to be what would be expected. (Fixes problem with a
+       g_return_if_fail() validating a TextDirection enumeration)
+
 Thu Jun  1 23:05:13 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkwidget.c: Remove all references to 
index f5205c77aa84e2344fabdc718c29f8702cced1b1..d33cfd8bca0597ecbf5839e51c62cc6b307ca053 100644 (file)
@@ -1,3 +1,21 @@
+Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
+       flag to on.
+
+       * gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event): 
+       Honor DOUBLE_BUFFRED_FLAG
+
+       * gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
+       function to set the DOUBLE_BUFFERED flag.
+
+       * gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
+       or not exposes done on the widget should be double-buffered.
+
+       * gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
+       to be what would be expected. (Fixes problem with a
+       g_return_if_fail() validating a TextDirection enumeration)
+
 Thu Jun  1 23:05:13 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkwidget.c: Remove all references to 
index f5205c77aa84e2344fabdc718c29f8702cced1b1..d33cfd8bca0597ecbf5839e51c62cc6b307ca053 100644 (file)
@@ -1,3 +1,21 @@
+Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
+       flag to on.
+
+       * gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event): 
+       Honor DOUBLE_BUFFRED_FLAG
+
+       * gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
+       function to set the DOUBLE_BUFFERED flag.
+
+       * gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
+       or not exposes done on the widget should be double-buffered.
+
+       * gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
+       to be what would be expected. (Fixes problem with a
+       g_return_if_fail() validating a TextDirection enumeration)
+
 Thu Jun  1 23:05:13 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkwidget.c: Remove all references to 
index f5205c77aa84e2344fabdc718c29f8702cced1b1..d33cfd8bca0597ecbf5839e51c62cc6b307ca053 100644 (file)
@@ -1,3 +1,21 @@
+Fri Jun  2 12:56:01 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkwidget.c (gtk_widget_init): Initialize DOUBLE_BUFFERED
+       flag to on.
+
+       * gtk/gtkwidget.c (gtk_widget_draw) gtk/gtkmain.c (gtk_main_do_event): 
+       Honor DOUBLE_BUFFRED_FLAG
+
+       * gtk/gtkwidget.c (gtk_widget_set_double_buffered): Add a
+       function to set the DOUBLE_BUFFERED flag.
+
+       * gtk/gtkwidget.h: Add GTK_DOUBLE_BUFFERED flag to indicate whether
+       or not exposes done on the widget should be double-buffered.
+
+       * gtk/gtkenums.h (GtkTextDirection): Reverse order of enumerations
+       to be what would be expected. (Fixes problem with a
+       g_return_if_fail() validating a TextDirection enumeration)
+
 Thu Jun  1 23:05:13 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkwidget.c: Remove all references to 
index 39d999b3aca9c41687fb9b45b469ef6fd865fea7..4efe82b773d5cf7c157e0f063b8e08d91c891d98 100644 (file)
@@ -81,8 +81,8 @@ typedef enum
 typedef enum
 {
   GTK_TEXT_DIR_NONE,
-  GTK_TEXT_DIR_RTL,
-  GTK_TEXT_DIR_LTR
+  GTK_TEXT_DIR_LTR,
+  GTK_TEXT_DIR_RTL
 } GtkTextDirection;
 
 /* justification for label and maybe other widgets (text?) */
index 952c8413478f35707529c8e25d01d0b8a56b92d2..a30676274ee48137b2c1a0cd3282e3b28c15c11b 100644 (file)
@@ -742,12 +742,12 @@ gtk_main_do_event (GdkEvent *event)
       break;
       
     case GDK_EXPOSE:
-      if (event->any.window)
+      if (event->any.window && GTK_WIDGET_DOUBLE_BUFFERED (event_widget))
        gdk_window_begin_paint_rect (event->any.window, &event->expose.area);
 
       gtk_widget_event (event_widget, event);
 
-      if (event->any.window)
+      if (event->any.window && GTK_WIDGET_DOUBLE_BUFFERED (event_widget))
        gdk_window_end_paint (event->any.window);
       break;
 
index dcb98970c60849ec85c77ab86e33615c6b451f59..474164dc822ac843f6712c5b6b2a3415eeab130f 100644 (file)
@@ -1023,7 +1023,8 @@ gtk_widget_init (GtkWidget *widget)
   GTK_WIDGET_SET_FLAGS (widget,
                        GTK_SENSITIVE |
                        GTK_PARENT_SENSITIVE |
-                       (composite_child_stack ? GTK_COMPOSITE_CHILD : 0));
+                       (composite_child_stack ? GTK_COMPOSITE_CHILD : 0) |
+                       GTK_DOUBLE_BUFFERED);
 
   widget->style = gtk_widget_peek_style ();
   gtk_style_ref (widget->style);
@@ -1859,7 +1860,7 @@ gtk_widget_draw (GtkWidget    *widget,
          area = &temp_area;
        }
 
-      if (!GTK_WIDGET_NO_WINDOW (widget))
+      if (!GTK_WIDGET_NO_WINDOW (widget) && GTK_WIDGET_DOUBLE_BUFFERED (widget))
        {
          GdkRectangle tmp_area = *area;
          gint x, y;
@@ -1876,7 +1877,7 @@ gtk_widget_draw (GtkWidget    *widget,
       
       gtk_signal_emit (GTK_OBJECT (widget), widget_signals[DRAW], area);
 
-      if (!GTK_WIDGET_NO_WINDOW (widget))
+      if (!GTK_WIDGET_NO_WINDOW (widget) && GTK_WIDGET_DOUBLE_BUFFERED (widget))
        gdk_window_end_paint (widget->window);
     }
 }
@@ -2802,6 +2803,19 @@ gtk_widget_set_app_paintable (GtkWidget *widget,
     }
 }
 
+void
+gtk_widget_set_double_buffered (GtkWidget *widget,
+                               gboolean   double_buffered)
+{
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GTK_IS_WIDGET (widget));
+
+  if (double_buffered)
+    GTK_WIDGET_SET_FLAGS (widget, GTK_DOUBLE_BUFFERED);
+  else
+    GTK_WIDGET_UNSET_FLAGS (widget, GTK_DOUBLE_BUFFERED);
+}
+
 /*****************************************
  * gtk_widget_set_sensitive:
  *
@@ -3192,7 +3206,7 @@ gtk_widget_create_pango_context (GtkWidget *widget)
   PangoContext *context;
   char *lang, *p;
 
-  g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
 
   context = gdk_pango_context_get ();
 
@@ -3232,7 +3246,7 @@ gtk_widget_create_pango_layout (GtkWidget *widget)
   PangoLayout *layout;
   PangoContext *context;
 
-  g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
 
   context = gtk_widget_create_pango_context (widget);
   layout = pango_layout_new (context);
@@ -3998,7 +4012,7 @@ GtkTextDirection
 gtk_widget_get_direction (GtkWidget *widget)
 {
   g_return_val_if_fail (widget != NULL, GTK_TEXT_DIR_LTR);
-  g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_val_if_fail (GTK_IS_WIDGET (widget), GTK_TEXT_DIR_LTR);
   
   if (GTK_WIDGET_DIRECTION_SET (widget))
     return GTK_WIDGET_DIRECTION_LTR (widget) ? GTK_TEXT_DIR_LTR : GTK_TEXT_DIR_RTL;
index 3d804a1371e00a93a67124d5c8b485f5cb152098..8fae055e30ee70d6f99908cb2ea3bc4b96a178d8 100644 (file)
@@ -60,7 +60,8 @@ typedef enum
   GTK_COMPOSITE_CHILD  = 1 << 17,
   GTK_NO_REPARENT      = 1 << 18,
   GTK_APP_PAINTABLE    = 1 << 19,
-  GTK_RECEIVES_DEFAULT = 1 << 20
+  GTK_RECEIVES_DEFAULT = 1 << 20,
+  GTK_DOUBLE_BUFFERED  = 1 << 21
 } GtkWidgetFlags;
 
 /* Macro for casting a pointer to a GtkWidget or GtkWidgetClass pointer.
@@ -101,6 +102,7 @@ typedef enum
 #define GTK_WIDGET_COMPOSITE_CHILD(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
 #define GTK_WIDGET_APP_PAINTABLE(wid)    ((GTK_WIDGET_FLAGS (wid) & GTK_APP_PAINTABLE) != 0)
 #define GTK_WIDGET_RECEIVES_DEFAULT(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_RECEIVES_DEFAULT) != 0)
+#define GTK_WIDGET_DOUBLE_BUFFERED(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_DOUBLE_BUFFERED) != 0)
   
 /* Macros for setting and clearing widget flags.
  */
@@ -511,6 +513,8 @@ void           gtk_widget_set_sensitive       (GtkWidget           *widget,
                                           gboolean             sensitive);
 void      gtk_widget_set_app_paintable   (GtkWidget           *widget,
                                           gboolean             app_paintable);
+void      gtk_widget_set_double_buffered (GtkWidget           *widget,
+                                          gboolean             double_buffered);
 void      gtk_widget_set_parent          (GtkWidget           *widget,
                                           GtkWidget           *parent);
 void      gtk_widget_set_parent_window   (GtkWidget           *widget,